package com.epalmpay.service.prepurchase;


import com.epalmpay.exception.ApplicationException;

import java.util.Date;

import com.epalmpay.dto.prepurchase.DoAddPrePurchBalanceInDTO;
import com.epalmpay.dto.prepurchase.PreBalanceChangeInDTO;
import com.epalmpay.dto.prepurchase.PreBalanceChangeListOutDTO;
import com.epalmpay.dto.prepurchase.PrePurActivityListOutDTO;
import com.epalmpay.dto.prepurchase.PrePurActivityMoreInfoOutDTO;
import com.epalmpay.dto.prepurchase.PrePurActivityStaticListOutDTO;
import com.epalmpay.dto.prepurchase.PrePurApproveInDTO;
import com.epalmpay.dto.prepurchase.PrePurInDTO;
import com.epalmpay.dto.prepurchase.PreTradeOutDTO;
import com.epalmpay.dto.prepurchase.PrepurchaseInfoInDTO;
import com.epalmpay.dto.prepurchase.ReceiceInfoInDTO;
import com.epalmpay.dto.prepurchase.ReceiceInfoListOutDTO;
import com.epalmpay.dto.prepurchase.ReceiceInfoOutDTO;
import com.epalmpay.dto.system.BaseOutDTO;
import com.epalmpay.entity.Page;
import com.epalmpay.dto.prepurchase.ShopPrePurListOutDTO;
import com.epalmpay.dto.prepurchase.UpdateInPrepurInDTO;

public interface IPrePurchaseService {

	BaseOutDTO addReceiceInfo(ReceiceInfoInDTO receiceInfoInDTO) throws ApplicationException;

	Boolean deleteReceiceInfo(ReceiceInfoInDTO receiceInfoInDTO) throws ApplicationException;

	ReceiceInfoOutDTO findReceiceInfo(ReceiceInfoInDTO receiceInfoInDTO)throws ApplicationException;
	  
	ReceiceInfoListOutDTO  listReceiceInfo(ReceiceInfoInDTO receiceInfoInDTO,Page page) throws ApplicationException;

	BaseOutDTO addPrePurchaseActivity(PrepurchaseInfoInDTO prePurInDTO)throws ApplicationException;

	PrePurActivityListOutDTO listPrePurActivity(PrePurInDTO prePurInDTO, Page pag)throws ApplicationException;

	Boolean deletePrePurActivity(PrePurInDTO prePurInDTO)throws ApplicationException;

	Boolean finishPrePurApprove(PrePurApproveInDTO prePurInDTO) throws ApplicationException;

	PreBalanceChangeListOutDTO listPreBalanceChange(PreBalanceChangeInDTO preBalanceChangeInDTO, Page pag)throws ApplicationException;

	PrePurActivityStaticListOutDTO listPrePurActivityStatic(PrePurInDTO prePurInDTO,Page page)throws ApplicationException;

	BaseOutDTO prePurActivityInfo(PrepurchaseInfoInDTO prepurchaseInfoInDTO) throws ApplicationException;

	Boolean updatePrePurUserDiscount(UpdateInPrepurInDTO updateInPrepurInDTO)throws ApplicationException;

	BaseOutDTO updateReceiceInfo(ReceiceInfoInDTO receiceInfoInDTO)throws ApplicationException;

	BaseOutDTO doEditPrePurActivity(PrepurchaseInfoInDTO prePurInDTO)throws ApplicationException;

	boolean finishSycOnStartPrPurs(String dateStr)throws ApplicationException;

	boolean finishSycOnEndPrPurs(String dateStr)throws ApplicationException;

	boolean finishSycUserSaleAmount()throws ApplicationException;

	boolean finishPrePursMerchantSetted(Date date)throws ApplicationException;

	BaseOutDTO finishEndPrePurActivity(PrePurInDTO prePurInDTO)throws ApplicationException;

	public ShopPrePurListOutDTO shopPrePurchaseActivity(PrePurInDTO prePurInDTO,Page page);

	void finishPrePursStaticByShop()throws ApplicationException;

	ShopPrePurListOutDTO findShopPrePurActivityStaic(PrePurInDTO prePurInDTO, Page page)throws ApplicationException;

	PrePurActivityMoreInfoOutDTO prePurActivityMoreInfo(PrepurchaseInfoInDTO prepurchaseInfoInDTO, Page page)throws ApplicationException;

	PreBalanceChangeListOutDTO listPreBalanceUse(PreBalanceChangeInDTO changeInDTO, Page page)throws ApplicationException;

	BaseOutDTO finishAddPrePurBalance(DoAddPrePurchBalanceInDTO doAddPrePurchBalanceInDTO)throws ApplicationException;

	PreTradeOutDTO prePurchTrades(PrepurchaseInfoInDTO prepurchaseInfoInDTO)throws ApplicationException;

	
	
}
